www.gusucode.com > Communication between Arduino and RaspberryPi using SIMULINK 程序工具箱matlab源码 > Communication between Arduino and RaspberryPi using SIMULINK/Washing machine fuzzy with RPI and Arduino hardware implementation/washing_machine.m

    clear all
close all
clc

fis = mamfis('Name',"washing machine");

%%%%1st input/Quantity of clothes%%%%%
fis = addInput(fis,[0 50],'Name',"quantity");
fis = addMF(fis,"quantity","gaussmf",[10 0],'Name',"low");
fis = addMF(fis,"quantity","gaussmf",[8.5 25],'Name',"medium");
fis = addMF(fis,"quantity","gaussmf",[8.5 50],'Name',"high");

%%%2nd input/ level of dirt%%%
fis = addInput(fis,[0 100],'Name',"dirt");
fis = addMF(fis,"dirt","trapmf",[-36 -4 4 36],'Name',"low");
fis = addMF(fis,"dirt","trapmf",[14 46 54 86],'Name',"medium");
fis = addMF(fis,"dirt","trapmf",[64 96 104 136],'Name',"high");

%%%%%%%%1st output/washing speed%%%%
fis = addOutput(fis,[0 60],'Name',"speed");
fis = addMF(fis,"speed","trimf",[0 7.5 15],'Name',"short");
fis = addMF(fis,"speed","trimf",[15 25 35],'Name',"medium");
fis = addMF(fis,"speed","trimf",[30 45 60],'Name',"long");

% %%%%%2nd output/water inlet%%%%%%%%%5
fis = addOutput(fis,[0 60],'Name',"inlet");
fis = addMF(fis,"inlet","trimf",[0 5 15],'Name',"short");
fis = addMF(fis,"inlet","trimf",[5 20 35],'Name',"medium");
fis = addMF(fis,"inlet","trimf",[20 40 60],'Name',"long");

%%%%%%%%Rules%%%% 
 rule1 = "quantity==high | dirt==high => speed=long";
 rule2 = "quantity==medium & dirt==medium => speed=long";
 rule3 = "quantity==medium & dirt==low => speed=medium";
 rule4 = "quantity==low & dirt==medium => speed=medium";
 rule5 = "quantity==low & dirt==low => speed=short";
 rule6 = "quantity==high | dirt==high => inlet=long";
 rule7 = "quantity==medium & dirt==medium => inlet=long";
 rule8 = "quantity==medium & dirt==low => inlet=medium";
 rule9 = "quantity==low & dirt==medium => inlet=medium";
 rule10 = "quantity==low & dirt==low => inlet=short";
 
rules = [rule1 rule2 rule3 rule4 rule5 rule6 rule7 rule8 rule9 rule10];
fis= addRule(fis,rules);

%%%%%%plots%%%%%%%
subplot(3,2,1)
plotfis(fis)
subplot(3,2,2)
plotmf(fis,'input',1)
subplot(3,2,3)
plotmf(fis,'input',2)
subplot(3,2,4)
plotmf(fis,'output',1)
subplot(3,2,5)
plotmf(fis,'output',2)

input = [27 30];
output = evalfis(fis, input)
Motor1 = (output(:,1))
Motor2 = (output(:,2))

% fis.DefuzzificationMethod = "centroid";
% output1 = evalfis(fis,input)
% fis.DefuzzificationMethod = "mom";
% output2 = evalfis(fis,input)

% writeFIS(fis,"washng_machine","dialog")
% fis = readfis("washng_machine")